1 <?php
2 function detect_config($redirect_to_setup = true){
3 $config_exists = is_readable(dirname(__FILE__) . '/config.php');
4
5 if(!$config_exists && $redirect_to_setup){
6 $url = (request_outside_admin_folder() ? '' : '../') . 'setup.php';
7
8 if(!headers_sent()){
9 @header("Location: $url");
10 }else{
11 echo '<META HTTP-EQUIV="Refresh" CONTENT="0;url=' . $url . '">' .
12 '<script>window.location = "' . $url . '";</script>';
13 }
14 exit;
15 }
16
17 return $config_exists;
18 }
19
20 function migrate_config(){
21 $curr_dir = dirname(__FILE__);
22 if(!is_readable($curr_dir . '/admin/incConfig.php') || !detect_config(false)){
23 return false; // nothing to migrate
24 }
25
26 @include($curr_dir . '/admin/incConfig.php');
27 @include($curr_dir . '/config.php');
28
29 $config_array = array(
30 'dbServer' => $dbServer,
31 'dbUsername' => $dbUsername,
32 'dbPassword' => $dbPassword,
33 'dbDatabase' => $dbDatabase,
34 'adminConfig' => $adminConfig
35 );
36
37 if(save_config($config_array)){
38 @rename($curr_dir . '/admin/incConfig.php', $curr_dir . '/admin/incConfig.bak.php');
39 @unlink($curr_dir . '/admin/incConfig.php');
40 return true;
41 }
42
43 return false;
44 }
45
46 function save_config($config_array = array()){
47 $curr_dir = dirname(__FILE__);
48 if(!count($config_array) || !count($config_array['adminConfig'])) return array('error' => 'Invalid config array');
49
50 $new_admin_config = '';
51 foreach($config_array['adminConfig'] as $admin_var => $admin_val){
52 $new_admin_config .= "\t\t'" . addslashes($admin_var) . "' => \"" . str_replace(array("\n", "\r", '"'), array('\n', '\r', '\"'), $admin_val) . "\",\n";
53 }
54 $new_admin_config = substr($new_admin_config, 0, -2) . "\n";
55
56 $new_config = "<?php\n" .
57 "\t\$dbServer = '" . addslashes($config_array['dbServer']) . "';\n" .
58 "\t\$dbUsername = '" . addslashes($config_array['dbUsername']) . "';\n" .
59 "\t\$dbPassword = '" . addslashes($config_array['dbPassword']) . "';\n" .
60 "\t\$dbDatabase = '" . addslashes($config_array['dbDatabase']) . "';\n" .
61
62 "\n\t\$adminConfig = array(\n" .
63 $new_admin_config .
64 "\t);";
65
66 if(detect_config(false)){
67 // attempt to back up config
68 @copy($curr_dir . '/config.php', $curr_dir . '/config.bak.php');
69 }
70
71 if(!$fp = @fopen($curr_dir . '/config.php', 'w')) return array('error' => 'Unable to write to config file', 'config' => $new_config);
72 fwrite($fp, $new_config);
73 fclose($fp);
74
75 return true;
76 }
77
78 function request_outside_admin_folder(){
79 return (realpath(dirname(__FILE__)) == realpath(dirname($_SERVER['SCRIPT_FILENAME'])) ? true : false);
80 }
81
82 function config($var, $force_reload = false){
83 static $config;
84
85 $default_config = array(
86 'dbServer' => '',
87 'dbUsername' => '',
88 'dbPassword' => '',
89 'dbDatabase' => '',
90
91 'adminConfig' => array(
92 'adminUsername' => '',
93 'adminPassword' => '',
94 'notifyAdminNewMembers' => false,
95 'defaultSignUp' => 1,
96 'anonymousGroup' => 'anonymous',
97 'anonymousMember' => 'guest',
98 'groupsPerPage' => 10,
99 'membersPerPage' => 10,
100 'recordsPerPage' => 10,
101 'custom1' => 'Full Name',
102 'custom2' => 'Address',
103 'custom3' => 'City',
104 'custom4' => 'State',
105 'MySQLDateFormat' => '%m/%d/%Y',
106 'PHPDateFormat' => 'n/j/Y',
107 'PHPDateTimeFormat' => 'm/d/Y, h:i a',
108 'senderName' => 'Membership management',
109 'senderEmail' => '',
110 'approvalSubject' => 'Your membership is now approved',
111 'approvalMessage' => "Dear member,\n\nYour membership is now approved by the admin. You can log in to your account here:\nhttp://{$_SERVER['HTTP_HOST']}" . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "\n\nRegards,\nAdmin",
112 'hide_twitter_feed' => false,
113 'maintenance_mode_message' => '<b>Our website is currently down for maintenance</b><br>\r\nWe expect to be back in a couple hours. Thanks for your patience.',
114 'mail_function' => 'mail',
115 'smtp_server' => '',
116 'smtp_encryption' => '',
117 'smtp_port' => 25,
118 'smtp_user' => '',
119 'smtp_pass' => ''
120 )
121 );
122
123 if(!isset($config) || $force_reload){
124 @include(dirname(__FILE__) . '/config.php');
125
126 $config['dbServer'] = $dbServer;
127 $config['dbDatabase'] = $dbDatabase;
128 $config['dbPassword'] = $dbPassword;
129 $config['dbUsername'] = $dbUsername;
130 $config['adminConfig'] = $adminConfig;
131 }
132
133 return (isset($config[$var]) && $config[$var] ? $config[$var] : $default_config[$var]);
134 }